package com.itheima.作业.第一题;

/*
    请在main方法中通过多态创建对象，随后使用对象，使得程序符合最终运行结果
    运行结果：
            10
            子类的method方法
            子类的show方法
*/

public class Demo1 {
    /*
        请在main方法中通过多态创建对象，随后使用对象，使得程序符合最终运行结果
     */
    public static void main(String[] args) {
        //父类引用指向子类对象
        Fu fu = new Zi();
        //成员变量的访问: 编译看左,运行也看左
        System.out.println(fu.num);
        //成员方法的访问: 编译看左,运行也看右
        fu.method();
        //多态语法的弊端: 无法访问父类中不存在的东西.不能访问子类特有的成员
        //解决方案: 通过向下转型解决
        if (fu instanceof Zi) {
            Zi zi = (Zi) fu;
            zi.show();
        }
    }
}

class Fu {
    int num = 10;

    public void method(){
        System.out.println("父类的method方法");
    }
}

class Zi extends Fu{
    int num = 20;

    public void method(){
        System.out.println("子类的method方法");
    }

    public void show(){
        System.out.println("子类的show方法");
    }
}



